#ifndef CARDS_H
#define CARDS_H
#include "Card.h"

#include <QSet>


class Cards
{
public:
    enum SortType{Asc, Desc, NoSort};

    Cards();

    // 添加扑克牌
    void add(const Card &card);
    void add(const Cards &cards);

    // 一次性插入多个数据（操作符重载 << ）
    Cards &operator <<(const Card &card);
    Cards &operator <<(const Cards &cards);

    // 删除扑克牌
    void remove(Card &card);
    void remove(Cards &cards);

    // 扑克牌的数量
    int CardCount();

    // 是否为空
    bool isEmpty();

    // 清空扑克牌
    void clear();

    // 最小点数、最大点数、指定点数的牌的数量、某张牌是否在集合中
    Card::CardPoint maxPoint();
    Card::CardPoint minPoint();
    int pointCount(Card::CardPoint point);
    bool contains(const Card &card);
    bool contains(const Cards &cards);

    // 随机取出一张扑克牌
    Card takerandcard();

    // QVector
    // QSet -> QVector
    CardList toCardList(SortType type = Desc);


private:
    QSet<Card> m_cards;
};

#endif // CARDS_H
